/***************************************************************************
 创建者: 华磊
 开始时间: 2018.8.14
 copyright: (C) 华友高科
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) hualei 2017.5.8 类的具体实现代码编写

 ***************************************************************************
 *  @file x.h
 *  功能:
 *
 *                                                                         *
 ***************************************************************************/
#ifndef ROBOTMANAGER_H
#define ROBOTMANAGER_H

#include "domparser.h"
#include <QMap>
#include "GeneralDefine.h"
#include "md5check.h"
#include <QThread>
//#include "robotengine.h"
#include "ecattype.h"


class RobotEngine;
//struct RobotInfo;
/**
 D_TCD_TCRCONTROLLER_DATA_PATHer class  机器人管理组件，管理所有机器人
 * 使用：
 * QString xmlfile = D_ROBOT_DATA_FILE_PATH + "globalConfig/robots.xml" ;
    readRobotsXml( xmlfile );
 */
#ifdef ROBOTMANAGERSHARED_EXPORT
class  ROBOTMANAGERSHARED_EXPORT RobotManager: public  DomParser
#else
class  RobotManager: public  DomParser
#endif
{

public:
    RobotManager( );
    ~RobotManager();

public:
    int readVersion(std::vector <ComponentVersion> &componentVersionList);
    int stopAllRobot();
    int ceaseAllRobot();


public:
    //添加一个机器人数据(重启生效)
  //  void addRobot(RobotInfo& info);

    //删除一个机器人数据(重启生效)
  //  void delRobot(int robotId);

   /**
    * @brief initRobots
    */
   int initRobots(int startType);

public:
    /**
     * @brief robotsMap  ///<机器人ID， 机器人对象>
     */
    QMap<int , RobotEngine*> robotsMap;

    /**
     * @brief robotsInfoMap ///<机器人ID， 机器人基本信息>
     */
    QMap<int , RobotInfo*> robotsInfoMap;

    /**
     * @brief robotsFolderMap ///<机器人ID， 对应文件夹>
     */
    QMap<int , QString> robotsFolderMap;

    /**
     * @brief robotsThreadMap  ///<机器人ID， 生存线程>
     */
    QMap<int , QThread*> robotsThreadMap;


private:
   /**
   * @brief readRobotsXml  //读取所有机器人信息 (这里仅仅是读取配置信息，类初始化用其它函数)
   * @param xmlfile 路径+文件名
   * @return  true if ok
   */
  bool readRobotsXml( QString xmlfile );

private:
       ComponentVersion versionInfo;

};

#endif // ROBOTMANAGER_H
